package com.usian.user.service.impl;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.usian.common.exception.CatchCustomException;
import com.usian.common.exception.code.UserStatusCode;
import com.usian.model.common.dtos.PageResponseResult;
import com.usian.model.common.dtos.ResponseResult;
import com.usian.model.common.enums.AppHttpCodeEnum;
import com.usian.model.user.dtos.AuthDto;
import com.usian.model.user.pojos.ApUserRealname;
import com.usian.user.mapper.ApUserMapper;
import com.usian.user.mapper.ApUserRealnameMapper;
import com.usian.user.service.ApUserRealnameService;
import com.usian.user.utils.YongyouyunAuthUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;

import javax.xml.ws.Action;
import java.util.HashMap;
import java.util.Map;

@Service
public class ApUserRealnameServiceImpl extends ServiceImpl<ApUserRealnameMapper, ApUserRealname> implements ApUserRealnameService {


    @Autowired
    ApUserRealnameMapper apUserRealnameMapper;


    @Override
    public ResponseResult loadListByStatus(AuthDto dto) {
        //参数为空
        if (dto == null) {
            CatchCustomException.catchs(UserStatusCode.PARAM_FAIL, "参数不合法！");
        }
        //分页数据初始化
        dto.checkParam();
        //条件查询
        LambdaQueryWrapper<ApUserRealname> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        if (dto.getStatus() != null) { //使用引用数据类型（包装类） 才能使用 Null   以后只查询状态为8的数据
            lambdaQueryWrapper.eq(ApUserRealname::getStatus, dto.getStatus());
        }
        Page<ApUserRealname> page = new Page<>(dto.getPage(), dto.getSize());
        IPage<ApUserRealname> ipage = this.page(page, lambdaQueryWrapper);

        ResponseResult responseResult = new PageResponseResult(dto.getPage(), dto.getSize(), (int) ipage.getTotal());
        responseResult.setData(ipage.getRecords());
        return responseResult;
    }


//实名认证 自动审核方法
    @Override
    public ResponseResult AutoUpdateStatus(AuthDto dto) {
        System.out.println("获取的id"+dto.getId());

//        boolean flag=true;
//        if (dto==null){
//            CatchCustomException.catchs(UserStatusCode.PARAM_FAIL, "参数不合法！");
//        }
//        // 1. 根据Id查询用户实名认证信息
//        ApUserRealname apUserRealname=this.getById(dto.getId());
//        if (apUserRealname==null){
//            CatchCustomException.catchs(UserStatusCode.PARAM_FAIL, "认证用户信息有误！");
//        }
//        // 2. 状态为待审核状态进入审核流程
//        if (apUserRealname.getStatus()!=1){
//            CatchCustomException.catchs(UserStatusCode.PARAM_FAIL, "当前数据状态有误，请检查后重试！");
//        }
//        //cf5c8862378a41fa8221685d2ed5eb5e
//        //1.先根据身份证正面照片进行身份证OCR识别
//        Map map=new HashMap();
//        map.put("image",apUserRealname.getFontImage());//正面照片
//        map.put("imageType","URL");
//        map.put("orcTYpe","0");
//        ResponseEntity<String> conns = YongyouyunAuthUtils.conns("https://api.yonyoucloud.com/apis/dst/IdcardOCR/IdcardOCR", "27fa243291914abababd90e98092ef46", map);
//        Map OcrMap = JSON.parseObject(conns.getBody(), Map.class);
//        Map data = JSON.parseObject(OcrMap.get("data") + "", Map.class);
//        String cardNum = (String) data.get("cardNum");
//        String name = (String) data.get("name");
//        String code = (String) OcrMap.get("code");
//        // 只有601200000 是成功
//        if(code.equals("601200000")){ //成功
//            //调用 身份证二要素接口  // 判断success = true
//            Map map2=new HashMap();
//            map2.put("idNumber",cardNum);
//            map2.put("userName",name);
//            ResponseEntity<String> conns2 = YongyouyunAuthUtils.conns("https://api.yonyoucloud.com/apis/dst/matchIdentity/matchIdentity", "27fa243291914abababd90e98092ef46", map2);
//            if(code.equals("601200000")){
//                // 调用活体检测 live_image // 判断601200000 && score > 90分
//                Map map3=new HashMap();
//                map3.put("image",apUserRealname.getLiveImage());//照片
//                map3.put("imageType","URL");
//                ResponseEntity<String> conns3 = YongyouyunAuthUtils.conns("https://api.yonyoucloud.com/apis/dst/Biologicalexamination/Biologicalexamination", "27fa243291914abababd90e98092ef46", map3);
//                if(code.equals("601200000")){
//                    // 调用 人证核验  // 判断code判断601200000 && score > 90分
//                    Map map4=new HashMap();
//                    map4.put("idCardImage",apUserRealname.getFontImage());//正面照片
//                    map4.put("imageType","URL");
//                    map4.put("liveImage",apUserRealname.getLiveImage());
//                    ResponseEntity<String> conns4 = YongyouyunAuthUtils.conns("https://api.yonyoucloud.com/apis/dst/ComparisonsofPersonsandDocuments/ComparisonsofPersonsandDocuments", "27fa243291914abababd90e98092ef46", map4);
//                    if(code.equals("601200000")){
//
//                    }else{
//                        flag = false;
//                    }
//                }else {
//                    flag = false;
//                }
//            }else{
//                flag = false;
//            }
//        }else{
//            flag = false;
//        }
//
//        // 成功和失败  成功  状态改正9
//        if(flag){
//            apUserRealname.setStatus((short)9);
//            this.updateById(apUserRealname);
//        }else{
//            // 自动审核失败 修改状态 8  // 失败： 直接修改状态8
//            apUserRealname.setStatus((short)8);
//            this.updateById(apUserRealname);
//        }
        return null;
    }

    //实名认证 手动审核方法
    @Override
    public ResponseResult updateStatus(AuthDto dto, Short status) {

//        验证参数
    if (dto.getId()==null){
        CatchCustomException.catchs(UserStatusCode.PARAM_FAIL, "参数不合法！");
    }
    if (dto==null){
        CatchCustomException.catchs(UserStatusCode.PARAM_FAIL, "参数不合法！");
    }
//    获取对象信息
        ApUserRealname apUserRealname = apUserRealnameMapper.selectById(dto.getId());

    if (dto.getMsg()==null){
        apUserRealname.setReason(dto.getMsg());
        apUserRealname.setStatus(status);
        apUserRealnameMapper.updateById(apUserRealname);
        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
    }
    apUserRealname.setStatus(status);
    apUserRealnameMapper.updateById(apUserRealname);
        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);


    }
}
